package com.xlh.Utils;

import java.util.ArrayList;
import java.util.List;

public class MudProtocol {


	public static List<String> getProtocol() {

		if(MUD_List == null) {
			MUD_List = new ArrayList<String>();
		}
		addProtocol();
		return MUD_List;
	}


	private static void addProtocol() {

		if(MUD_List != null) {
			MUD_List.add(ESA);
			MUD_List.add(ZJSEP);
			MUD_List.add(ZJSP2);
			MUD_List.add(ZJBR);
			MUD_List.add(SYSY);
			MUD_List.add(ZJTITLE);
			MUD_List.add(ZJEXIT);
			MUD_List.add(ZJEXITRM);
			MUD_List.add(ZJEXITCL);
			MUD_List.add(ZJLONG);
			MUD_List.add(ZJOBIN);
			MUD_List.add(ZJOBOUT);
			MUD_List.add(ZJBTSET);
			MUD_List.add(ZJOBLONG);
			MUD_List.add(ZJOBACTS);
			MUD_List.add(ZJOBACTS2);
			MUD_List.add(ZJYESNO);
			MUD_List.add(ZJMAPTXT);
			MUD_List.add(ZJHPTXT);
			MUD_List.add(ZJMORETXT);
			MUD_List.add(ZJTMPSAY);
			MUD_List.add(ZJPOPMENU);
			MUD_List.add(ZJCHANNEL);
			MUD_List.add(SYSEXIT);
			MUD_List.add(FNETERROR);

			//添加051
			MUD_List.add(ZJATTR);

			MUD_List.add(EC);
		}
	}

	private static List<String> MUD_List;


	//MUD协议特殊字符
	public static final String ESA = "";

	//051
	public static final String  ZJATTR = ESA + "051";

	//字串分隔符，比如向客户端发送场景中的多个npc信息，npc信息之间可用此分隔符连接
	public static final String ZJSEP = "$zj#";
	// public static final String ZJSEP "$FF$"
	//菜单字串分隔符，一次向客户端发送多个菜单项，每项之间用此连接，菜单名字和关联命令之间用 '|' 连接
	public static final String ZJSP2 = "$z2#";
	//长描述换行符
	public static final String ZJBR = "$br#";
	public static final String ZJURL =  ESA + "[u:";
	public static final String ZJSIZE =  ESA + "[s:";
	public static final String SYSY = ESA + "000";
	// public static final String INPUTTXT(a,b) ESA + "001" + a + ZJSEP + b
	//场景名称标志，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端场景标题标签上显示，支持彩色显示
	//ZJTITLE+ob->query("short")+"\n"....客户端收到ZJTITLE标志设置标题的同时会清空出口和左侧场景物件栏
	public static final String ZJTITLE = ESA + "002";
	public static final String ZJEXIT = ESA + "003";
	public static final String ZJEXITRM = ESA + "903";
	public static final String ZJEXITCL = ESA + "913";
	public static final String ZJLONG = ESA + "004";

	//场景左侧栏物件标志，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端场景左侧物件列表框中添加显示
	//ZJOBIN+"name1:cmds1"ZJSEP"name2:cmds2"......."\n"
	public static final String ZJOBIN = ESA + "005";

	//客户端收到此消息。会将删除左侧栏对应物件。
	public static final String ZJOBOUT = ESA + "905";

	//推送自定义按钮定义，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端自定义按钮区处理，类似出口处理
	//ZJBTSET+"b1:查看状态:score"ZJSEP"b2:查看技能:skills"..."\n"
	//可以任意推送任何一个按钮不必每次全部推送，总共17个自定义按钮，分别b1-b17表示。(bxx:名称:命令)
	public static final String ZJBTSET = ESA + "006";

	//弹出描述标志，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端弹出框中显示，支持ZJBR换行
	//此标志打头的文字信息会弹出显示，设计中可以配合文字点击协议灵活运用
	//ZJOBLONG"这是一个巨大的石头(stone)，你可以试着"+ZJURL("cmds:move stone")+"推动(move)"NOR"它。\n"
	public static final String ZJOBLONG = ESA + "007";

	//弹出窗口中的附加列表框，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端弹出框中的列表区中处理，作为可触摸命令按钮显示
	//次接口与文字点击接口功能类似，但是必须与ZJOBLONG结合，可以根据需要灵活调用此接口或者文字点击接口。
	public static final String ZJOBACTS = ESA + "008";//按钮列表1，窄按钮，可根据需要灵活使用标志1或2
	public static final String ZJOBACTS2 = ESA + "009";//按钮列表2，自适应宽度按钮
	public static final String WZOBACTS3 = ESA + "091";//弹出框右侧文本

	public static final String ZJYESNO = ESA + "010";

	//必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端地图框中显示，地图框支持ZJBR换行
	public static final String ZJMAPTXT = ESA + "011";

	//显示血条
	public static final String ZJHPTXT = ESA + "012";

	//配合start_more()使用，start_more()输出的内容将在客户端大文本阅读框中分页显示，支持ZJBR换行
	public static final String ZJMORETXT = ESA + "013";

	//既显既隐提示标志，必须在行首，之后跟随的直到 '\n' 之前的内容将在客户端临时消息框中渐显渐隐显示
	public static final String ZJTMPSAY = ESA + "015";

	public static final String INPUTTXT = ESA + "001";

	//客户端弹出菜单标志，之后跟随的直到 '\n' 之前的内容将在客户端处理并弹出菜单
	//ZJPOPMENU"菜单一|cmds1" ZJSP2 "菜单二|cmds2"...."\n"

	//r列数，w列宽(屏宽/w)，h行高(屏宽/h)，s字号(屏宽/s)，
	public static final String ZJPOPMENU = ESA + "020";

	public static final String ZJFORCECMD = ESA + "014";

	//ZJCHANNEL打头的行会在聊天频道框显示，此协议最好在/feature/message.c中的receive_message函数中添加
	public static final String ZJCHANNEL = ESA + "100";

	//客户端收到此消息会强行关闭客户端
	public static final String SYSEXIT = ESA + "999";
	//网络错误
	public static final String FNETERROR = ESA + "9999";
	public static final String EC = "\n"; // 结束符

	public static final String WZLINBOX = ESA + "052";
	//输入框中可以被替换的字符标记
	public static final String WZREPSTR = "$txt#";




}
